import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 质量巡检 控制器 / 质量巡检 控制器添加质量巡检
 * @param {object} data
 * @param {CorrectiveRequests创建传输实体} [data.correctiveRequestsCreateDTO] 整改要求
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建人
 * @param {number} [data.delFlag] 删除标识
 * @param {number} [data.id] 主键id
 * @param {string} [data.inspectionDate] 质量巡检日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionItemName] 检查事项名称
 * @param {string} [data.inspectionNature] 检查性质
 * @param {array<InspectionSite创建传输实体>} [data.inspectionSiteCreateDTOList] 检查部位
 * @param {string} [data.inspectionUnit] 检查单位
 * @param {string} [data.inspectorName] 巡检人员姓名
 * @param {string} [data.projectId] 项目Id
 * @param {string} [data.projectName] 项目名称
 * @param {string} [data.qualityType] 巡检类型 可选值: QUALITY_INSPECTION, SAFETY_INSPECTION
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<QualityInspection页面展示实体>}
 */
export function qualityInspectionAdd(data, config) {
  return post("/qualityInspection/add", data, config);
}

/**
 * 质量巡检 控制器 / 质量巡检 控制器删除质量巡检
 * @param {object} params
 * @param {object} data
 * @param {string} params.id 质量巡检ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<QualityInspection页面展示实体>}
 */
export function qualityInspectionDelete(params, data, config) {
  return postWithQueryParams("/qualityInspection/delete", params, data, config);
}

/**
 * 质量巡检 控制器 / 质量巡检 控制器查询质量巡检详情
 * @param {object} params
 * @param {string} params.id 质量巡检ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<QualityInspection页面展示实体>}
 */
export function qualityInspectionDetail(params, config) {
  return get("/qualityInspection/detail", params, config);
}

/**
 * 质量巡检 控制器 / 质量巡检 控制器质量巡检导出
 * @param {object} data
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建人
 * @param {number} [data.delFlag] 删除标识
 * @param {number} [data.id] 主键id
 * @param {string} [data.inspectionEndDate] 质量巡检结束日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionItemName] 检查事项名称
 * @param {string} [data.inspectionNature] 检查性质
 * @param {string} [data.inspectionResult] 检查结果
 * @param {string} [data.inspectionStartDate] 质量巡检开始日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionUnit] 检查单位
 * @param {string} [data.inspectorName] 巡检人员姓名
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.projectName] 项目名称
 * @param {string} [data.qualityType] 巡检类型 可选值: QUALITY_INSPECTION, SAFETY_INSPECTION
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise}
 * @author 安奇
 */
export function qualityInspectionExport(data, config) {
  return post("/qualityInspection/export", data, config);
}

/**
 * 质量巡检 控制器 / 质量巡检 控制器分页查询质量巡检
 * @param {object} data
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建人
 * @param {number} [data.delFlag] 删除标识
 * @param {number} [data.id] 主键id
 * @param {string} [data.inspectionEndDate] 质量巡检结束日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionItemName] 检查事项名称
 * @param {string} [data.inspectionNature] 检查性质
 * @param {string} [data.inspectionResult] 检查结果
 * @param {string} [data.inspectionStartDate] 质量巡检开始日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionUnit] 检查单位
 * @param {string} [data.inspectorName] 巡检人员姓名
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.projectName] 项目名称
 * @param {string} [data.qualityType] 巡检类型 可选值: QUALITY_INSPECTION, SAFETY_INSPECTION
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<QualityInspection页面展示实体>>}
 */
export function qualityInspectionList(data, config) {
  return post("/qualityInspection/list", data, config);
}

/**
 * 质量巡检 控制器 / 质量巡检 控制器更新质量巡检
 * @param {object} data
 * @param {CorrectiveRequests创建传输实体} [data.correctiveRequestsCreateDTO] 整改要求
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建人
 * @param {number} [data.delFlag] 删除标识
 * @param {number} [data.id] 主键id
 * @param {string} [data.inspectionDate] 质量巡检日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.inspectionItemName] 检查事项名称
 * @param {string} [data.inspectionNature] 检查性质
 * @param {array<InspectionSite创建传输实体>} [data.inspectionSiteCreateDTOList] 检查部位
 * @param {string} [data.inspectionUnit] 检查单位
 * @param {string} [data.inspectorName] 巡检人员姓名
 * @param {string} [data.projectId] 项目Id
 * @param {string} [data.projectName] 项目名称
 * @param {string} [data.qualityType] 巡检类型 可选值: QUALITY_INSPECTION, SAFETY_INSPECTION
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<QualityInspection页面展示实体>}
 */
export function qualityInspectionUpdate(data, config) {
  return post("/qualityInspection/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} CorrectiveRequests创建传输实体 创建传输实体
 * @property {string} correctiveDeadline 整改任务完成的截止日期
 * @property {string} correctiveFormId 整改单的编号
 * @property {string} correctivePerson 负责执行整改任务的具体人员
 * @property {string} correctiveRequirement 需要整改的具体要求或问题描述
 * @property {string} correctiveUnit 负责执行整改任务的单位或部门
 * @property {number} delFlag 删除标识
 * @property {number} hasCorrectiveForm 记录是否已生成整改单
 * @property {number} id id
 * @property {number} qualityId 巡检id
 * @description 创建传输实体
 */

/**
 * @typedef {object} InspectionSite创建传输实体 检查部位创建传输实体
 * @property {string} checkArea 检查部位
 * @property {string} correctiveAction 整改措施
 * @property {string} createTime 记录创建时间
 * @property {string} createUser 创建人
 * @property {boolean} delFlag 是否删除标识 (0 - 未删除, 1 - 已删除)
 * @property {array<number>} fileIdList 附件id
 * @property {number} id 主键
 * @property {string} inspectionDescription 检查说明
 * @property {string} inspectionResult 检查结果
 * @property {number} qualityId 巡检id
 * @property {string} updateTime 记录更新时间
 * @property {string} updateUser 更新人
 * @description 检查部位创建传输实体
 */

/**
 * @typedef {object} InspectionSite页面展示实体 检查部位页面展示实体
 * @property {string} checkArea 检查部位
 * @property {string} correctiveAction 整改措施
 * @property {string} createTime 记录创建时间
 * @property {string} createUser 创建人
 * @property {boolean} delFlag 是否删除标识 (0 - 未删除, 1 - 已删除)
 * @property {number} id 主键
 * @property {string} inspectionDescription 检查说明
 * @property {string} inspectionResult 检查结果
 * @property {number} qualityId 巡检id
 * @property {string} updateTime 记录更新时间
 * @property {string} updateUser 更新人
 * @description 检查部位页面展示实体
 */

/**
 * @typedef {object} QualityInspection页面展示实体 质量巡检页面展示实体
 * @property {number} checkNumber 检查部位数
 * @property {object} correctiveRequestsVO 页面展示实体
 * @property {string} correctiveRequestsVO.correctiveDeadline 整改任务完成的截止日期
 * @property {string} correctiveRequestsVO.correctiveFormId 整改单的编号
 * @property {string} correctiveRequestsVO.correctivePerson 负责执行整改任务的具体人员
 * @property {string} correctiveRequestsVO.correctiveRequirement 需要整改的具体要求或问题描述
 * @property {string} correctiveRequestsVO.correctiveUnit 负责执行整改任务的单位或部门
 * @property {number} correctiveRequestsVO.delFlag 删除标识
 * @property {number} correctiveRequestsVO.hasCorrectiveForm 记录是否已生成整改单
 * @property {number} correctiveRequestsVO.id id
 * @property {number} correctiveRequestsVO.qualityId 巡检id
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建人
 * @property {number} delFlag 删除标识
 * @property {number} id 主键id
 * @property {string} inspectionDate 质量巡检日期
 * @property {string} inspectionItemName 检查事项名称
 * @property {string} inspectionNature 检查性质
 * @property {string} inspectionResult 巡检结果
 * @property {array<InspectionSite页面展示实体>} inspectionSiteVOList 检查部位
 * @property {string} inspectionUnit 检查单位
 * @property {string} inspectionUnitName 检查单位名称
 * @property {string} inspectorName 巡检人员姓名
 * @property {number} isHaveCorrectiveRequest 是否生成整改单
 * @property {string} projectId 项目Id
 * @property {string} projectName 项目名称
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新人
 * @description 质量巡检页面展示实体
 */
